(function () {

        var filterType = document.getElementById('filterType');
        var classFilter = document.getElementById('ClassFilter');
        var classList = document.getElementById('ClassList');

        function filter() {
                var value = classFilter.value.toLowerCase();

                var items = classList.getElementsByTagName('li');
                for (var i = 0; i < items.length; i++) {
                        var item = items[i];
                        var itemName = item.getAttribute('data-name') || '';
                        itemName = itemName.toLowerCase().replace(/\s/g, '');
                        if (itemName.indexOf(value) >= 0) {
                                item.style.display = '';
                        } else {
                                item.style.display = 'none';
                        }
                }
        }
        classFilter.onkeyup = filter;

        function getQueryParameter(name) {
                var match = new RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
                return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
        }

        var show = getQueryParameter('show');
        if (show) {
                document.getElementById('filterType').value = show;
        }

        var searchTerm = getQueryParameter('classFilter') || '';
        classFilter.value = searchTerm;
        filter();

        function resetFilter() {
                classFilter.value = '';
                filter();
        }

        function updateMenuLinks() {
                var links = classList.getElementsByTagName('a');
                var searchTerm = classFilter.value;
                for (var i = 0; i < links.length; i++) {
                        var link = links[i];
                        var prefix = link.href.split('?')[0]; // link.href=prefix
                        +
                        (searchTerm === '' ? '' : '?classFilter=' + searchTerm);
                        link.href = prefix;
                }
        }
        var
                menuLinks = classList.getElementsByTagName('a');
        for (var i = 0; i < menuLinks.length; i++) {
                menuLinks[i].onclick = function () {
                        updateMenuLinks();
                }
        }
})();